package com.shangma.cn.commons.http;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

/**
 * 开发人员: 辉哥真球帅
 * 联系方式: zhengzhoudaxuevip@163.com
 * 创建时间: 2021/10/7  17:04
 * 文件含义:
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class AxiosResult<T> {

    private int status;

    private String msg;

    private T data;


    private AxiosResult(AxiosStatus axiosStatus) {
        this.status = axiosStatus.getStatus();
        this.msg = axiosStatus.getMsg();
    }

    /**
     * 成功的方法
     */

    public static <T> AxiosResult<T> success() {
        return setData(AxiosStatus.OK, null);
    }

    /**
     * 成功的方法
     */
    public static <T> AxiosResult<T> success(T t) {
        return setData(AxiosStatus.OK, t);
    }

    /**
     * 失效的方法
     */
    public static <T> AxiosResult<T> error() {
        return setData(AxiosStatus.ERROR, null);
    }

    /**
     * 失效的方法
     */
    public static <T> AxiosResult<T> error(AxiosStatus axiosStatus) {
        return setData(axiosStatus, null);
    }

    /**
     * 失效的方法
     */
    public static <T> AxiosResult<T> error(AxiosStatus axiosStatus,T t) {
        return setData(axiosStatus, t);
    }

    /**
     * 定义一个赋值的函数
     */

    private static <T> AxiosResult<T> setData(AxiosStatus axiosStatus, T t) {
        AxiosResult<T> tAxiosResult = new AxiosResult<>(axiosStatus);
        tAxiosResult.setData(t);
        return tAxiosResult;
    }
}
